A container is a data structure that envelops (“wraps”) wraps a piece of software (or a component of an application) in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries, generally anything that can be installed on a server. The container is intended to contain enough information to ensure that the contained software or application will always run the same, regardless of its environment.